home *** CD-ROM | disk | FTP | other *** search
- '
- 'Class description:
- '
- !short:Mnu class structure:
- Class Mnu:
- ~~~~~~~~~~~
- This class enables to create the simple menu objects, the selecting of
- which is done by the cursor arrows or by the stressed character.
- (instead of the choice class which doesn't know the stressed characters
- but it is processed more quickly)
-
- Common use:
- ~~~~~~~~~~~
- LOCAL OBJECT Mnu OF Mnu
- Mnu:Init(...)
- n:=Mnu:Process()
- Mnu:Done()
-
- Due to the heredition can the methods Hide() and Show() of class Win be used
- in the class Mnu. It is possible to save temporary the menu and refresh it
- and restart the menu selection by repeated call of the Mnu:Process() method.
-
- The source code is in the C_Mnu.prg
-
- !seealso: c_win.ngo:Win c_box.ngo:Box c_menu.ngo:Menu c_choice.ngo:Choice c_color.ngo:Color ob_class.ngo:"Class hierarchy"
-
- !short:~~~~~~~~~~~~~~~~~~~~~
- !short:create class Mnu from Win
- !short: export:
- !short: var Help //{}
- ^BMnu:Help^N: public: array
- Paralel array for Mnu:Items, for saving of the "MenuID", which is need for
- the correct detecting of the index (RecNo) for interactive help text
- displaying, for every item from Mnu:Items.
-
- !short: var Items //{}
- ^BMnu:Items^N: public: array
- The array of data, where the items of the text strings to be selected are
- saved. Example:
- {"Choice1","Choice2",...,"ChoiceN"}
-
- !short: var SelItems //{}
- ^BMnu:SelItems^N: public: array
- The paralel array for Mnu:Items, it marks the selectability of the item.
-
- !short: var Cursor //(object of Cursor)
- ^BMnu:Cursor^N: private: object
- Class Cursor object, which stores the cursor shape and position during the
- menu selection.
-
- !short: var Choice //1
- ^BMnu:Choice^N: read-only: numeric
- The current item number of Mnu:Items array is stored here (it was user
- selected). If user instead of item selecting pressed Esc, the negative
- current item number is returned.
-
- !short: var Top //1
- ^BMnu:Top^N: private: numeric
- The first displayed item in the window is stored here. (the menu items can
- scroll in the window). It is need for repeated activation of the method
- Mnu:Process().
-
- !short: var CanAppend //false
- ^BMnu:CanAppend^N: public: logical
- If true, the user can by pressing of Ins/Del keys activate the code block
- which must append/delete some item from Mnu:Items. The menu can be
- dynamicaly changed.
-
- !short: var InsBlock //{|o|nil}
- ^BMnu:InsBlock^N: public: code_block
- This code block is activated from Mnu:Process() only when the Mnu:CanAppend
- is true and when the user pressed the Ins key. As parameter to this code
- block is passed the self object. The task for the code block is to append
- a new item to Mnu:Items(), or to change the instvar variables of this
- object. The menu items can be added/deleted an the menu can be dynamicaly
- changed during of the selection.
-
- !short: var DelBlock //{|o|nil}
- ^BMnu:DelBlock^N: public: code_block
- This code block is activated from Mnu:Process() only when the Mnu:CanAppend
- is true and when the user pressed the Del key. As parameter to this code
- block is passed the self object. The task for the code block is to delete
- an items from Mnu:Items(), or to change the instvar variables of this
- object. The menu items can be added/deleted an the menu can be dynamicaly
- changed during of the selection.
-
- !short: method New=MnuNew //o:New() --> self
- ^BMnu:New()^N: public: return self
- The object is filled with default values.
-
- !short: method Init=MnuInit //o:Init(Name,R,C,CurSize,Items,SelItems,Clr,Shd) --> true
- ^BMnu:Init(Name,R,C,CurSize,Items,SelItems,Clr,Shadow)^N: public: return true
- This method serves for initialising and positioning of the window for
- the menu to the screen to be nearest as possible to the cursor and
- not to cover the desired text (started on the R,C position with the length
- of CurSize). The window must be whole visible. After the preparing task is
- done, the menu is painted to the screen and the control is returned to the
- calling function.
-
- Parameter description:
- ~~~~~~~~~~~~~~~~~~~~~~
- ^UName^N: text or code block: no default
- Text or code block as window title.
-
- ^UR^N: numeric: default is Row().
- Text -row- (cursor) screen position, which shouldn't be covered,
- but the window should be as near as possible to this text.
-
- ^UC^N: numeric: default is Col().
- Text -column- (cursor) screen position, which shouldn't be covered,
- but the window should be as near as possible to this text.
-
- ^UCurSize^N: numeric: default is 1.
- Text width which shouldn't be covered, but the window should be as near
- as possible to this text.
-
- ^UItems^N: array: no default the data must be entered
- Text strings array, representing the menu.
-
- ^USelItems^N: array: default is the array filled with the true items of
- the same size as the array selected by Items parameter.
- This array enables the menu items selection.
-
- ^UClr^N: character: default is m->Color:Edit.
- Window colors.
-
- ^UShadow^N: logical: default is true for color monitor, false for monochrom.
- If true the shadow is painted around the window.
-
- !short: method Process=MnuProcess //o:Process() --> nChoice
- ^BMnu:Process()^N: public: return nChoice
- This method makes the own menu choice, it returns the selected item number,
- if negative, the user instead of the item selecting pressed Esc.(he doesn't
- wanmt to select anything). This method can be called repeatedly, unlimited
- number of times. The data about the selected item is stored to instvar
- variable Mnu:Choice().
-
- !short: method Done=MnuDone //o:Done() --> true
- ^BMnu:Done()^N: public: return true
- The menu is saved, the screen is refreshed and the control is returned to
- calling function.
-
- !short: endclass
-
-